﻿//请你设计一个程序对该问题进行解答。
//
//众所周知在扑克牌中，有一个老掉牙的游戏叫做
//24
//24 点，选取
//4
//4 张牌进行加减乘除，看是否能得出
//24
//24 这个答案。
//
//现在小蓝同学发明了一个新游戏，他从扑克牌中依次抽出6张牌，注意不是一次抽出，进行计算，看是否能够组成
//42
//42 点, 满足输出 YES，反之输出 NO。
//
//最先抽出来的牌作为第一个操作数，抽出牌做第二个操作数，运算结果再当作第一个操作数，继续进行操作。
//
//注：除不尽的情况保留整数，而且扑克牌的四张
//10
//10 都丢了，不会出现
//10
//10，1和A都可能出现并表示1。
//
//请设计一个程序对该问题进行解答。
//
//输入描述
//输出仅一行包含
//6
//6 个字符。
//
//保证字符
//∈
//∈ 1 2 3 4 5 6 7 8 9 J Q K A。
//
//输出描述
//若给出到字符能够组成
//42
//42 点, 满足输出 YES，反之输出 NO。
//
//输入输出样例
//示例
//输入
//
//K A Q 6 2 3
//copy
//输出
//
//YES
//copy
//样例说明
//K
//×
//A
//=
//K
//K×A = K 即
//13
//×
//1
//=
//13
//13×1 = 13
//13
///
//12
//=
//1
//13 / 12 = 1 保留整数
//1
//+
//6
//=
//7
//1 + 6 = 7
//7
//∗
//2
//=
//14
//7∗2 = 14
//14
//∗
//3
//=
//42
//14∗3 = 42



#include <iostream>
using namespace std;

bool dfs(int arr[7], int n, int pre)
{
    if (n == 7 && pre == 42)
    {
        return true;
    }
    if (n == 7 && pre != 42)
    {
        return false;
    }
    return dfs(arr, n + 1, arr[n] + pre) || dfs(arr, n + 1, pre - arr[n]) ||
        dfs(arr, n + 1, pre * arr[n]) || dfs(arr, n + 1, pre / arr[n]);
}
int main()
{
    // 请在此输入您的代码
    int arr[7];
    for (int i = 1; i <= 6; i++)
    {
        char a;
        cin >> a;
        if (a <= '9' && a >= '1')
        {
            arr[i] = a - '0';
        }
        else if (a == 'A')
        {
            arr[i] = 1;
        }
        else if (a == 'J')
        {
            arr[i] = 11;
        }
        else if (a == 'Q')
        {
            arr[i] = 12;
        }
        else if (a == 'K')
        {
            arr[i] = 13;
        }

    }


    bool ret = dfs(arr, 3, arr[1] + arr[2]) || dfs(arr, 3, arr[1] - arr[2]) ||
        dfs(arr, 3, arr[1] * arr[2]) || dfs(arr, 3, arr[1] / arr[2]);
    if (ret == true)
    {
        cout << "YES";
    }
    else {
        cout << "NO";
    }


    return 0;
}
